package com.ywy.chat.handler;

import com.ywy.chat.ChatConstants;
import com.ywy.chat.handler.impl.ChatMsgHandler;
import com.ywy.chat.handler.impl.PingMsgHandler;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

/**
 * 消息处理器初始化工厂
 *
 * @author ywy
 * @date 2021/12/31 14:22
 */
@Slf4j
public class MsgHandlerFactory {
    /**
     * 是否初始化
     */
    private static boolean isInit = false;

    /**
     * 消息类型处理器容器
     */
    private static Map<String, MsgHandler> handlerMap = new HashMap<>();

    /**
     * 初始化消息处理器容器
     */
    public static void init() {
        if (isInit) {
            return;
        }

        handlerMap.put(ChatConstants.MESS_TYPE_CHAT, new ChatMsgHandler());
        handlerMap.put(ChatConstants.MESS_TYPE_PING, new PingMsgHandler());
        log.info("MsgHandlerFactory----->handler factory init!");

        isInit = true;
    }

    /**
     * 根据类型获取消息处理器
     * @param type
     * @return
     */
    public static MsgHandler getMsgHandler(String type) {
        return handlerMap.get(type);
    }
}
